package es.uned.ii.si3.web.actions;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import es.uned.ii.si3.business.GestionMensajes;
import es.uned.ii.si3.model.Mensaje;
import es.uned.ii.si3.util.UserAgentDetector;
import es.uned.ii.si3.web.actions.generic.LoginRequiredAction;


public class VerMensajesAction extends LoginRequiredAction {


    public ActionForward executeWithAccess(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
    	
    	UserAgentDetector uaDetector = new UserAgentDetector(request);

		GestionMensajes gestionMensajes = new GestionMensajes();
		
		int idUsuario = this.getIdUsuario();

		if (request.getParameter("idMensaje") != null) {
			
			int idMensaje = -1;
			try {
				idMensaje = Integer.parseInt(request.getParameter("idMensaje"));
			} catch (Exception e) {
				return mapping.findForward(uaDetector.composeForward("nohaymensajes"));
			}
			
			Mensaje mensaje = gestionMensajes.getMensaje(idMensaje);
			if ((mensaje == null) || (mensaje.getDestinatario().getIdUsuario() != idUsuario)){
				return mapping.findForward(uaDetector.composeForward("nohaymensajes"));
			}
	
			if (!mensaje.isLeido()) {
				gestionMensajes.marcarLeido(mensaje);
			}
			request.setAttribute("mensaje", mensaje);
			return mapping.findForward(uaDetector.composeForward("vermensaje"));
			
		} else {
			List<Mensaje> listaMensajes = gestionMensajes.getMensajes(idUsuario);
			
			if ((listaMensajes == null) || (listaMensajes.isEmpty())) {
				return mapping.findForward(uaDetector.composeForward("nohaymensajes"));
			} else {
				request.setAttribute("listaMensajes", listaMensajes);
				return mapping.findForward(uaDetector.composeForward("vermensajes"));
			} 
		}//else
    }
    
    
}
